As computing systems grow increasingly versatile and customizable, in terms of both hardware and software, it can become very difficult to tune the computing system to improve performance. In complicated computing systems, with so many options, it can take years of experience to develop the intuition necessary to identify problems and configuration options to address those problems.
For example, in a z/OS environment for a mainframe computer, an administrator may need to identify and address a bottleneck. The administrator may look at Resource Measurement Facility (RMF) data to narrow down where the bottleneck exists. The administrator may look at RMF data to evaluate cache structure performance or other aspects of sysplex-level input/output (I/O) performance. The RMF data may relate to the physical hardware, the I/O speed, and the cache hit/miss statistics. An experienced administrator may use the hit/miss statistics to determine that a particular cache structure is improperly tuned, or overloaded. That administrator may then need to consider adjusting the timing of running jobs, cache assignments, and the possible impact of adding hardware to the system to address the problem. Even an experienced administrator would have a difficult time predicting the effects of such changes in the computing system.
As seen from the example above, while the RMF data is available to be analyzed, it may take years of experience with z/OS computing systems before the administrator learns what to look for in the RMF data to identify the bottleneck and its location, or to differentiate good performance values from bad performance values. Even after changes are made, the administrator is saddled with the task of monitoring how the changes affect performance, and whether those changes are having unintended consequences elsewhere in the system. Even in computing systems other than z/OS systems, from storage area networks (SANs) to desktop computers, the multiplicity of options makes tuning difficult.
A solution is needed to solve the problems of identifying performance issues in a computing system, and identifying possible solutions to ameliorate those problems. A further benefit would be the ability to provide an upgrade path and to predict, based on actual performance data, how the upgrade will affect performance.